import java.util.Stack;

public class MyQueue {
    //使用两个栈实现队列
    private Stack<Integer> s1;
    private Stack<Integer> s2;
    //实例化时，默认创建两个队列
    public MyQueue() {
        s1 = new Stack<>();
        s2 = new Stack<>();
    }
    //判空操作
    public boolean empty() {
        //当两个栈都没有元素时，队列为空
        return s1.isEmpty()&& s2.isEmpty();
    }
    //入队操作
    public void offer(int value) {
        s1.push(value);
    }
    //出队操作
    //利用栈的特性
    public int poll() {
        //判断队列是否为空,空队列没有元素出队
        if(empty()) {
            System.out.println("队列是空的。。。");
            return -1;
        }
        //队列不为空，进行入队操作
        //将s1的元素放入s2中，由s2进行出队操作
        //前提是s2内没有元素，否则s2直接出队列
        if(s2.isEmpty()) {
            //s1为空则循环结束
            while (!s1.isEmpty()) {
                s2.push(s1.pop());
            }
        }
        return s2.pop();
    }
    //拿到队顶元素
    public int peek() {
        if(empty()) {
            System.out.println("队列为空");
            return -1;
        }
        if(s2.isEmpty()) {
            while (s1.isEmpty()) {
                s2.push(s1.pop());
            }
        }
        return s2.peek();
    }
}
